define(function (require, exports, module) {
    var myPub = require('./public');
    var oscroll = $('.js_scroll');                              // 滚动加载盒子
    var oListBox = $('.js_list');                               // ul
    var oTip = $('.js_detailTip');                              // 点击弹出弹出层
    var olayer = $('.js_layer').html();                         // 弹层内容
    var oDetailSwiper = $('.js_detailSwiper .js_swiperPage');   // 须轮播的页面
    var time_tip = null;

    var billDateUrl = [BASE_URL+'/member/availableBalance',BASE_URL+'/member/frozenBalance'];   // 模拟数据
    // 点击弹出收支明细规则
    oTip.on('click',function () {
        clearTimeout(time_tip);
        time_tip = setTimeout(function () {
            myPub.TipLayerLongClose(' ',olayer,'no');
        },300);
        myPub.HamstopPropaga();
    });
    module.exports = {
        init: function(data,names){
            ShopListAjaxData.AjaxData(billDateUrl[ShopListAjaxData.preNavIndex],ShopListAjaxData.preNavIndex,function () {});
            ShopListAjaxData.HistoryInit();
            ShopListAjaxData.SwitchClick();
            ShopListAjaxData.ScrollPage();
        }
    };
    var ShopListAjaxData = {
        limit: 10,                      // 每次加载多少数据
        getData: [],                    // 数据记录
        start:[0,0],                    // 开始数据
        end: [0,0],                     // 结束数据
        time_Scroll:null,               // 计时器
        preTabLoadOff: [true,true],     // 页面数据加载开关
        prePageSCroll: [],              // 记录滚动高度
        preNavIndex: 0,                 // 当前页面下标
        allAreaData: [[],[]],           // 全部数据1
        LoadOff:[true,true],            // 滚动加载开关
        // 设置余额收支明细数据
        AjaxData: function (url,index,fn) {
            var _this = this;
            G_JSON_POST(url,{
                limit: _this.limit,         //请求的条数
                start: _this.start[index]   //请求开始的条数
            },function (data) {
                _this.getData = data.data;
                if(data.code == 'success'){
                   //start从0开始加载数据
                    if(_this.start[index] == 0){
                        // 用于点击时没有加载过
                        _this.preTabLoadOff[index] = false;
                        // 如果请求回来的是空数据
                        if(_this.getData.length == 0){
                            _this.allAreaData[index] = [];
                            $('.js_moreBtnBox').eq(index).hide();
                            $('.js_yue_deatail').eq(index).hide();
                            $('.js_errorpage').eq(index).show();
                        }else if(_this.getData.length > 0){
                            _this.allAreaData[index] = _this.getData;
                            // 拼接数据
                            $('.js_swiperPage').eq(index).find('.js_list').append(_this.GoodsLiBoxHtml(_this.getData));
                            _this.start[index] = _this.limit + _this.start[index];

                            oscroll.eq(index).scrollTop(1);
                            if(_this.getData.length < _this.limit){
                                //显示没有更多
                                $('.js_moreBtnBox').eq(index).find('.js_loadingBtn').eq(0).show().siblings().hide();
                                _this.LoadOff[index] = false;
                                return
                            }
                        }
                    }else {
                        if(_this.getData.length == 0){
                            //显示没有更多
                            $('.js_moreBtnBox').eq(index).find('.js_loadingBtn').eq(0).show().siblings().hide();
                            _this.LoadOff[index] = false;
                            return
                        }else {
                            $('.js_swiperPage').eq(index).find('.js_list').append(_this.GoodsLiBoxHtml(_this.getData));
                            _this.start[index] = _this.limit + _this.start[index];
                            oscroll.eq(index).scrollTop(1);
                        }
                    }
                }else{
                    // 有数据页面隐藏 错误页面显示
                    $('.js_swiperPage').eq(index).find('.js_yue_deatail').hide();
                    $('.js_swiperPage').eq(index).find('.js_errorpage').show();
                    return false;
                }
                if(fn){fn()}
            })
        },
        // 历史数据定位
        HistoryInit : function (fn1, fn2) {
            var _this = this;
            if(sessionStorage.getItem("yueNavIndex") != null) {
                _this.preNavIndex = sessionStorage.getItem("yueNavIndex")*1;
                $('.js_yue_detail li').eq(_this.preNavIndex).addClass('active').siblings().removeClass('active');
                $('.js_yue_detail li').eq(_this.preNavIndex).siblings().find('i').hide();
                $('.js_yue_detail li').eq(_this.preNavIndex).find('i').show();
                oDetailSwiper.eq(_this.preNavIndex).fadeIn().siblings().fadeOut();
                if(_this.preNavIndex != 0){
                    // 当本地缓存不是第一页的时候加载数据
                    _this.AjaxData(billDateUrl[_this.preNavIndex],_this.preNavIndex,function () {
                    });
                }
                if(fn1) fn1(_this.preNavIndex);
            }
            else {
                if(fn2) fn2();
            }
        },
        // 设置历史定位
        SetSession: function () {
            var _this = this;
            sessionStorage.setItem("yueNavIndex", _this.preNavIndex);
        },
        // 点击切换页面
        SwitchClick:function () {
            var _this = this;
            $('.js_yue_detail li').on('click',function () {
                var index = $(this).index();
                $(this).addClass('active').siblings().removeClass('active');
                $(this).siblings().find('i').hide();
                $(this).find('i').show();
                oDetailSwiper.eq(index).fadeIn().siblings().fadeOut();
                _this.preNavIndex = index;
                if(_this.preTabLoadOff[index]){
                    _this.AjaxData(billDateUrl[index],index,function () {
                    })
                }
                _this.SetSession();
            });
        },
        // 滚动加载
        ScrollPage: function () {
            var _this = this;
            var minScrHeight = 200;
            oscroll.on('scroll', function () {
                var afterScroll = $(this).scrollTop();
                // 滚动页面距离底部200像素 延迟250毫秒加载数据
                clearTimeout(_this.time_Scroll);
                _this.time_Scroll = setTimeout(function() {
                    _this.prePageSCroll[_this.preNavIndex] = afterScroll;
                    if(oListBox[0].scrollHeight - afterScroll - oscroll.height() < minScrHeight) {
                        // 当还有数据时滚动加载数据
                        if(_this.LoadOff[_this.preNavIndex]){
                            // 设置翻页到最后一页 返回
                            _this.AjaxData(billDateUrl[_this.preNavIndex],_this.preNavIndex,function () {
                            });
                        }
                    }
                },250);
            })
        },
    // 拼接数据
        GoodsLiBoxHtml:function (data) {
            var _this = this;
            var shtml = '';
            for(var i = 0; i < data.length; i++){
                var ba=data[i];
                var baDate=new Date(ba.createDate);
                var nyr=baDate.Format("yyyy年MM月dd日");
                var sfm=baDate.Format("yyyy-MM-dd hh:mm").replace(baDate.Format("yyyy-MM-dd"),"").trim();
                shtml += '<li class="spBe flexBox BoxCenter">'+
                    '  <div class="yue_type">';
                if(ba.businessType==1){
                    shtml+=  '      <p>购物支出</p>';
                }else if(ba.businessType==0){
                    shtml+=  '      <p>购物返现</p>';
                }else if(ba.businessType==2){
                    shtml+=  '      <p>订单取消</p>';
                }else if(ba.businessType==3){
                    shtml+=  '      <p>售后返还</p>';
                }else if(ba.businessType==4) {
                    shtml+=  '      <p>现金红包</p>';
                }else if(ba.businessType==5) {
                    shtml+=  '      <p>余额失效</p>';
                }else if(ba.businessType==7) {
                    shtml+=  '      <p>签到</p>';
                }else if(ba.businessType==8) {
                    shtml+=  '      <p>评论奖励</p>';
                }
                else if(ba.status==0){
                    shtml+=  '      <p>返现冻结</p>';
                }else if(ba.status==1){
                    shtml+=  '      <p>返现解冻</p>';
                }else if(ba.status==2){
                    shtml+=  '      <p>返现失效</p>';
                }
                shtml+=    '      <p>'+nyr+'<span>'+sfm+'</span></p>'+
                    '  </div>';
                if(ba.status==2 || ba.businessType==1 || ba.businessType==5){
                   shtml+= '  <div class="yue_typeNum orderCancel">-'+ba.amount+'</div>';
                }else if(ba.businessType==0 ||ba.businessType==2||ba.businessType==3 || ba.businessType==4 || ba.businessType==7 || ba.businessType==8){
                    shtml+= '  <div class="yue_typeNum returnGoods">+'+ba.amount+'</div>';
                }else if(ba.status==0){
                    shtml+= '  <div class="yue_typeNum returnNum">+'+ba.amount+'</div>';
                }else if(ba.status==1){
                    shtml+= '  <div class="yue_typeNum shopPay">-'+ba.amount+'</div>';
                }
                shtml+= '</li>';
            }
            return shtml
        }
    }
});

Date.prototype.Format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
};